let regex = /hello/
console.log(regex.test('hello'));

// 匹配手机号
// 1.必须以1开头
// 2.必须第二位是34578
// 3.必须是数字
// 4.必须是11位数
let RegExp1 = /^1[34578]\d{9}$/g
console.log(RegExp1.test(13822222222));

// 匹配qq号
/**
 * 匹配qq号
 * 要求：开头不能是0、必须是数字、5-10位数
 */

let RegExp2 = /^[1-9][0-9]{4,9}$/g
console.log(RegExp2.test(1161894636));



/**
 * 匹配十进制 #D12a23 #D25
 * 要求：必须是#开头 必须是6位或者是3位、可以大小写
 */

let RegExp3 = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/g
console.log(RegExp3.test('#D3'));



/**
 * 邮箱
 * 要求：大小写、数字、包括_-.
*/

let RegExp4 = /^([0-9a-zA-Z\_\-\.]+)@([0-9a-z]+)\.([A-Za-z]{2,4})$/g
console.log(RegExp4.test('1161@qq.com'));



/**
 * url地址
 * 要求：1.前面https、http、ftp、file都是可以的2、www这个可以是任何的英文数字1和或者是多个3、后面是.然后是
*/

let RegExp5 = /^(https?|http|ftp|file):\/\/([a-zA-Z]+)\.([a-zA-Z]+)\.([a-zA-Z]+)$/g
console.log(RegExp5.test('https://www.baidu.com'));


/**
 * 正则规则：
 * 1、^表示以什么开发 $表示以什么结尾 后面的/g表示全局匹配
 * 2、{} 表示几位数  {n}恰好 n 次  {n,}至少 n 次 {n,m}至少 n 次，最多 m 次
 * 3、\d数字  \D非数字    \w单词字符   \W非单词字符   \s空白字符   \S非空白字符
 * 4、多少到多少可以用[0-9] 如果是全部的数字则直接用\d
 * 5、或者用|
 * 6、可以是大小写的字母或者数字[0-9A-Za-z]
 * 7、/ _ - .这些都需要转义，转义用\转
 * 8、？表示的是0个或者1个   *表示0个或者多个    +表示1个或者多个
*/



// 1. 基本匹配规则
// 规则	描述	示例
// 普通字符	匹配自身（如字母、数字、下划线等）	a 匹配 "abc" 中的 a
// 转义字符 \	用于匹配特殊字符或表示特殊含义	\. 匹配小数点 .
// ^	匹配字符串的开头	^a 匹配以 a 开头的字符串
// $	匹配字符串的结尾	a$ 匹配以 a 结尾的字符串
// 2. 特殊字符
// 规则	描述	示例
// \d	匹配任意一个数字字符（0-9）	\d 匹配 "123" 中的 1, 2, 3
// \D	匹配任意一个非数字字符	\D 匹配 "abc123" 中的 a, b, c
// \w	匹配任意一个单词字符（字母、数字、下划线 _）	\w 匹配 "abc_123" 中的 a, b, c, _, 1, 2, 3
// \W	匹配任意一个非单词字符	\W 匹配 "abc@123" 中的 @
// \s	匹配任意一个空白字符（空格、制表符 \t、换行符 \n 等）	\s 匹配 "a b" 中的空格
// \S	匹配任意一个非空白字符	\S 匹配 "a b" 中的 a, b
// .	匹配任意单个字符（除了换行符 \n）	. 匹配 "abc" 中的 a, b, c
// 3. 量词
// 规则	描述	示例
// *	匹配前面的子表达式 0 次或多次	a* 匹配 "aaa" 中的所有 a
// +	匹配前面的子表达式 1 次或多次	a+ 匹配 "aaa" 中的所有 a
// ?	匹配前面的子表达式 0 次或 1 次	a? 匹配 "ba" 中的 a
// {n}	匹配前面的子表达式恰好 n 次	a{3} 匹配 "aaaa" 中的前 3 个 a
// {n,}	匹配前面的子表达式至少 n 次	a{2,} 匹配 "aaaa" 中的后 3 个 a
// {n,m}	匹配前面的子表达式至少 n 次，最多 m 次	a{2,4} 匹配 "aaaaa" 中的前 4 个 a
// 4. 分组与捕获
// 规则	描述	示例
// ()	分组并捕获匹配的内容	(ab)+ 匹配 "abab"
// (?:...)	非捕获分组（只分组不捕获）	(?:ab)+ 匹配 "abab"
// \n	引用第 n 个捕获组的内容（从 1 开始计数）	(\d)\1 匹配 "11"
// `	`	或运算符，匹配左侧或右侧的表达式
// 5. 断言
// 规则	描述	示例
// (?=...)	正向先行断言：要求后面必须紧跟某个模式	a(?=b) 匹配 "ab" 中的 a
// (?!...)	负向先行断言：要求后面不能紧跟某个模式	a(?!b) 匹配 "ac" 中的 a
// (?<=...)	正向后行断言：要求前面必须紧跟某个模式	(?<=a)b 匹配 "ab" 中的 b
// (?<!...)	负向后行断言：要求前面不能紧跟某个模式	(?<!a)b 匹配 "cb" 中的 b
// 6. 边界匹配
// 规则	描述	示例
// \b	匹配单词边界（单词的开头或结尾）	\bword\b 匹配 "word"
// \B	匹配非单词边界	\Bword\B 匹配 "swordfish" 中的 word
// 7. 标志（Flags）
// 标志	描述	示例
// g	全局匹配（匹配所有符合的子字符串，而不是只匹配第一个）	/a/g 匹配 "aaa" 中的所有 a
// i	忽略大小写	/a/i 匹配 "Aaa" 中的所有 a
// m	多行模式（^ 和 $ 匹配每一行的开头和结尾，而不仅仅是整个字符串）	/^a/m 匹配多行字符串中的每行开头的 a
// s	单行模式（. 可以匹配换行符 \n）	/.+/s 匹配包含换行符的字符串
// u	Unicode 模式（支持匹配 Unicode 字符）	/\u{1F600}/u 匹配表情符号





